package kotlin05.src.main.java.com.example.kotlin05.s04

import java.io.IOException

/**
 * @jvmField
 *
 * 在Java中，不能直接访问例如定义的spells字段，所以必须调用getSpells,然而，你可以
 * 给kotlin属性添加@JvmField注解，暴露它的支持字段给Java调用者，
 * 从而避免使用getter方法
 *
 *
 *  TODO：2. jvmStatic
 *  * @jvmfield 注解还能用来以静态方式提供伴生对象里定义的值
 *  * @jvmStatic 注解的作用类似于 @jvmfield，允许直接调用伴生对象里的函数
 *
 *
 *  //TODO:3.抛异常  @Throws
 *
 *
 *
 */
class JvmFieldKotlinTest2 {


    @JvmField
    val spells = listOf("magic ms.l", "lay on hans")


   //伴生对象
    companion object{
        @JvmField
        val MAX_SPELL_COUNT = 10

       //注解，支持Java中直接调用这里的函数
       @JvmStatic
       fun getSpellbook() = println("i am getSpellbook..")
    }


    //TODO:3.抛异常  @Throws,不加 @Throws 注解，java调用，只能抛出Throwable异常
    //TODO:java调用，如果想要处理特定的异常，这里要加 @Throws 注解

    @Throws(IOException::class)
    fun acceptBook(){
        throw IOException()
    }



}